package com.fjwt.gz.mgr.ctrl.merchant;

import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.fjwt.gz.core.model.ApiRes;
import com.fjwt.gz.db.dto.MchGroupDTO;
import com.fjwt.gz.db.dto.MchGroupMchDTO;
import com.fjwt.gz.db.vo.MchGroupMchVO;
import com.fjwt.gz.db.vo.MchGroupVO;
import com.fjwt.gz.mgr.ctrl.CommonCtrl;
import com.fjwt.gz.service.impl.MchGroupMchService;
import com.fjwt.gz.service.impl.MchGroupService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;


/**
 * 商圈管理类
 *
 */
@Slf4j
@RestController
@RequestMapping("/api/mchGroup")
public class MchGroupController extends CommonCtrl {

    @Autowired
    private MchGroupService mchGroupService;

    @Autowired
    private MchGroupMchService mchGroupMchService;

    /**
     * 商圈列表
     */
    @PreAuthorize("hasAnyAuthority('ENT_MCH_GROUP_INFO')")
    @GetMapping
    public ApiRes groupList(){
        MchGroupDTO groupDTO = getObject(MchGroupDTO.class);
        log.info("pc端商圈列表，请求地址：/api/mchGroup，请求参数:{}", JSONUtil.toJsonStr(groupDTO));
        IPage<MchGroupVO> pages = mchGroupService.getMchGroupList(getIPage(), groupDTO);
        log.info("pc端商圈列表，请求地址：/api/mchGroup，返回结果：{}", JSONUtil.toJsonStr(pages));
        return ApiRes.page(pages);
    }
    /**
     * 新增商圈
     */
    @PreAuthorize("hasAnyAuthority('ENT_MCH_GROUP_INFO_ADD')")
    @PostMapping("/save")
    public ApiRes groupSave(){
        MchGroupDTO dto = getObject(MchGroupDTO.class);
        log.info("pc端新增商圈，请求地址：/api/mchGroup/save，请求参数:{}",JSONUtil.toJsonStr(dto));
         mchGroupService.saveMchGroup(dto);
        return ApiRes.ok();
    }

    /**
     * 获取商圈详情
     */
    @PreAuthorize("hasAnyAuthority('ENT_MCH_GROUP_INFO_EDIT')")
    @PostMapping("/getInfo")
    public ApiRes getInfo(){
        MchGroupDTO dto = getObject(MchGroupDTO.class);
        log.info("pc端商圈详情，请求地址：/api/mchGroup/getInfo，请求参数:{}",JSONUtil.toJsonStr(dto));
        MchGroupVO vo = mchGroupService.getByGroupNo(dto.getGroupNo());
        log.info("pc端商圈详情，请求地址：/api/mchGroup/getInfo，返回结果：{}",vo);
        return ApiRes.ok(vo);
    }

    /**
     * 编辑商圈信息
     */
    @PreAuthorize("hasAnyAuthority('ENT_MCH_GROUP_INFO_EDIT')")
    @PostMapping("/update")
    public ApiRes groupUpdate(){
        MchGroupDTO dto = getObject(MchGroupDTO.class);
        log.info("pc端编辑商圈信息，请求地址：/api/mchGroup/update，请求参数:{}",JSONUtil.toJsonStr(dto));
        mchGroupService.updateMchGroup(dto);
        return ApiRes.ok();
    }

    /**
     * 删除商圈信息
     */
    @PreAuthorize("hasAnyAuthority('ENT_MCH_GROUP_INFO_DEL')")
    @PostMapping("/remove")
    public ApiRes groupRemove(){
        MchGroupDTO dto = getObject(MchGroupDTO.class);
        log.info("pc端删除商圈信息，请求地址：/api/mchGroup/remove，请求参数:{}",JSONUtil.toJsonStr(dto));
        mchGroupService.removeGroup(dto.getGroupNo());
        return ApiRes.ok();
    }

//    /**
//     * 导入商圈中的商户
//     * 导入商圈商户信息
//     * @return
//     */
//    @PreAuthorize("hasAnyAuthority('ENT_GROUP_INFO_IMPT_MCH')")
//    @PostMapping("/importGroupMch")
//    public ApiRes importMch(){
//        MchGroupDTO dto = getObject(MchGroupDTO.class);
//        String url = getValString("url");
//        log.info("pc端导入商圈商户信息，请求地址:/api/mchGroup/importGroupMch，请求参数：dto={},url={}",JSONUtil.toJsonStr(dto),url);
//        mchGroupService.saveGroupMch(dto, url);
//        return ApiRes.ok();
//    }
//
//    /**
//     * 手输导入商圈商户信息
//     * @return
//     */
//    @PostMapping("/importGroupMchList")
//    public ApiRes importGroupMchList(){
//        String groupMchList= getValString("groupMchList");
//        String groupNo = getValString("groupNo");
//        log.info("pc端手输导入商圈商户信息，请求地址：/api/mchGroup/importGroupMchList，请求参数：groupMchList={},groupNo={}",groupMchList,groupNo);
//        mchGroupService.importGroupMchList(groupMchList, groupNo);
//        return ApiRes.ok();
//    }
//
//
//    /**
//     * 删除商圈中的商户
//     * @return
//     */
//    @PostMapping("/groupMch/remove")
//    public ApiRes groupMchRemove(){
//        MchGroupMchDTO groupMch = getObject(MchGroupMchDTO.class);
//        log.info("pc端删除商圈中的商户，请求地址：/api/mchGroup/groupMch/remove，请求参数：dto={}",JSONUtil.toJsonStr(groupMch));
//        mchGroupMchService.removeGroupMch(groupMch.getGroupMchId());
//        return ApiRes.ok();
//    }
//
//    /**
//     * 获取商圈存在的用户
//     * @return
//     */
//    @PostMapping("/groupMchList")
//    public ApiRes groupMchList(){
//        String groupNo = getValString("groupNo");
//        String mchNo = getValString("mchNo");
//        String mchName = getValString("mchName");
//        log.info("pc端获取商圈存在的用户，请求地址：/api/mchGroup/groupMchList，请求参数：groupNo={},mchNo={},mchName={}",groupNo,mchNo,mchName);
//        IPage<MchGroupMchVO> list = mchGroupMchService.selectGroupMch(getIPage(),groupNo,mchNo,mchName);
//        log.info("pc端获取商圈存在的用户，请求地址：/api/mchGroup/groupMchList，返回结果{}",JSONUtil.toJsonStr(list));
//        return ApiRes.page(list);
//    }
}
